"""
例17 数组剔除元素后的乘积
1．问题描述
给定一个整数数组A。定义B[i]=A[0]*...*A[i-1]*A[i+1]*...*A[n-
1]，即B[i]为剔除A[i]元素之后所有数组元素之积，计算数组B的时候请
不要使用除法，输出数组B。
2．问题示例
输入A=[1，2，3]，输出[6，3，2]，即B[0]=A[1]*A[2]=6；
B[1]=A[0]*A[2]=3；B[2]=A[0]*A[1]=2。输入A=[2，4，6]，输出[24，
12，8]。
"""


def array_product(li):
    if not li:
        return []
    res = [1] * len(li)  # 创建一个和li长度一样的数组，初始化为1
    for i in range(1, len(li)):
        res[i] = res[i - 1] * li[i - 1]  # 遍历数组，计算每个元素左边的乘积
    right = 1
    for i in range(len(li) - 1, -1, -1):    # 从后往前遍历数组
        res[i] *= right  # 遍历数组，计算每个元素右边的乘积
        right *= li[i]  # 更新右边的乘积

    return res


if __name__ == '__main__':
    print(array_product([2, 4, 6]))
